# frozen_string_literal: true

module Jobs
  class ActivationReminderEmails < ::Jobs::Scheduled
    every 2.hours

    def execute(args)
      User
        .joins(
          "LEFT JOIN user_custom_fields ON users.id = user_id AND user_custom_fields.name = 'activation_reminder'",
        )
        .where(active: false, staged: false, user_custom_fields: { value: nil })
        .where("users.created_at BETWEEN ? AND ?", 3.days.ago, 2.days.ago)
        .find_each do |user|
          user.custom_fields["activation_reminder"] = true
          user.save_custom_fields

          email_token =
            user.email_tokens.create!(email: user.email, scope: EmailToken.scopes[:signup])
          ::Jobs.enqueue(
            :user_email,
            type: "activation_reminder",
            user_id: user.id,
            email_token: email_token.token,
          )
        end
    end
  end
end
